package com.cs.beneficios.web.action;
//import com.cs.beneficios.business.entity.ProgramaDAO;
import com.cs.beneficios.business.entity.SedeDAO;
//import com.cs.beneficios.business.entity.SubProgramaDAO;
import com.cs.beneficios.business.model.UsuarioxSedeVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.UserException;

import java.io.IOException;

import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class UsuariosxSedeAction extends Action 
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {ActionMessages messages = new ActionMessages();
    
    try{
        AccessControl access = new AccessControl();
        access.validateAccess(mapping,request,response);
        HttpSession session = request.getSession();
        //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
		ConnectionFactory cf = new ConnectionFactory();
        UsuarioxSedeVO objususedeVO = new UsuarioxSedeVO();
        String strsede = request.getParameter("Codigo");
        String strSubprog = request.getParameter("codeSubPrograma");
        String strProg = request.getParameter("codePrograma");
        String strOption = request.getParameter("option");
        String strNameProg = null;
        String strNameSubprog = null;
        String strNameSede = null;
        
        try{
        
          if(strsede == null)
          {
            strsede = request.getParameter("code");
            SedeDAO objSede = new SedeDAO(cf);
            strNameSede = objSede.getNameByCode(strsede);
            cf.closeConnection(objSede.getConn());
          }
          
          if(strSubprog != null && strsede != null)
          {
            session.setAttribute("codePrograma",strProg);
            session.setAttribute("codeSubprograma",strSubprog);
            session.setAttribute("codeSede",strsede);
          }
                     
          if(strSubprog != null)
          {
            objususedeVO.setCodeSubprograma(new Long(strSubprog));
            /*SubProgramaDAO objSubProg = new SubProgramaDAO(cf);
            strNameSubprog = objSubProg.getNameByCode(strSubprog);
            cf.closeConnection(objSubProg.getConn());*/
          }
          
          if(strProg != null)
          {
            objususedeVO.setCodePrograma(new Long(strProg));
            /*ProgramaDAO objProg = new ProgramaDAO(cf);
            strNameProg = objProg.getNameByCode(strProg);
            cf.closeConnection(objProg.getConn());*/
          }
          
          if((Object)strsede != null)
          {
            objususedeVO.setCodeSede(new Long(strsede)); 
          
            Collection usuarios = null;

            SedeDAO objsedeDAO = new SedeDAO(cf);
            usuarios = objsedeDAO.getUsuarioxSede(objususedeVO);
            cf.closeConnection(objsedeDAO.getConn());
            
            if(strOption != null)
            {
              request.setAttribute("option",strOption);
            }
            
            if(usuarios.size() > 0){
              request.setAttribute("Usuarios",usuarios);
              request.setAttribute("sede",strNameSede);
            }else{
              request.setAttribute("msg","No existe Informacion para esta Sede");
            }
          }
        }catch(Exception e){
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
        }
    
    }catch(UserException ue) {
      
      messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }
      
    
    }
  
  
  
  
    return mapping.findForward("success");
  }
}